package br.ufmt.bean;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import br.ufmt.exception.PessoaException;
import br.ufmt.model.Cliente;
import br.ufmt.model.SexoEnum;

@ManagedBean
@SessionScoped
public class ClienteBean  {
	
	private String nome;
	private Date dataNascimento;
	private String cpf;
	private String telefone;
	private SexoEnum sexo;
	private Cliente cliente;
	private static List<Cliente>clientes = new ArrayList<Cliente>();
	
	public Cliente getCliente() {
		return cliente;
	}



	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}



	public static void setClientes(List<Cliente> clientes) {
		ClienteBean.clientes = clientes;
	}


	public String getNome() {
		return nome;
	}



	public List<Cliente> getClientes() {
		return clientes;
	}



	



	public void setNome(String nome) {
		this.nome = nome;
	}

	public Date getDataNascimento() {
		return dataNascimento;
	}

	public void setDataNascimento(Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

	public String getCpf() {
		return cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	public SexoEnum getSexo() {
		return sexo;
	}

	public void setSexo(SexoEnum sexo) {
		this.sexo = sexo;
	}
	
	public static Cliente getClientePorCpf(String cpf) {
		for (Cliente c : clientes) {
			if (c.getCpf().equals(cpf))
				return c;
		}
		return null;
	}	
	
	public void salvar(){
		Cliente c = new Cliente();
		try {
			c.setNome(nome);
			c.setCpf(cpf);
			c.setDataNascimento(dataNascimento);
			c.setSexo(sexo);
			c.setTelefone(telefone);
			clientes.add(c);
			FacesMessage msg = new FacesMessage("Cliente salvo com Sucesso!");
			FacesContext.getCurrentInstance().addMessage("form", msg);
			setNome("");
			setCpf("");
			setSexo(SexoEnum.MASCULINO);
			setTelefone("");
			setDataNascimento(null);
			
			
		} catch (PessoaException e) {
			FacesMessage msg = new FacesMessage(e.getMessage());
			FacesContext.getCurrentInstance().addMessage("form", msg);
		}
	
	}
	
	public void excluir(){
		String cpf =(String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("cpf");
		Cliente c =ClienteBean.getClientePorCpf(cpf);
		clientes.remove(c);
		
	}
	
	public static ArrayList<Cliente> getClientePorNome(String nome) {
		ArrayList<Cliente> resultado = new ArrayList<Cliente>();
		
		for (Cliente c : clientes) {
			if (c.getNome().toUpperCase().indexOf(nome.toUpperCase())>=0)
				resultado.add(c);
		}
		return resultado;
	}
	
	public ArrayList<Cliente> pesquisar(){
		String nome =(String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("nome");
		ArrayList<Cliente> cl = new ArrayList<Cliente>();
		cl=ClienteBean.getClientePorNome(nome);
		return cl;
		
	}
	public void alterar(){
		
		
		
	}



	
	
	

}
